Transaction servers are servers that store data that is modifiable via transactions. A transaction generally and non-restrictively is a request to read, write, or update the data stored in a transaction server. Common transactions include orders, purchases, changes, additions, and deletions. Transaction servers are used in banking systems, stock and securities-trading systems, and other types of systems where it is important to ensure that any given transaction is never lost, and that the data can be recovered in the presence of a fault on the transaction server.
Transactions may update one or more master files that serve both as an audit trail and a history for future analyses. A major issue in a transaction-processing system is ensuring that all master files are updated before the transaction is considered completely processed. For example, if two files must be updated, but a system failure occurs after the first one but before the second one, the software has to be able to roll back the first update and start over later. Such a process may be referred to as a two-phase commit process.
More particularly, the two-phase commit process is a technique for ensuring that a transaction successfully updates all appropriate files in a distributed database environment. All servers involved in the transaction first confirm that the transaction has been received and is recoverable. Next, each server is told to commit the transaction by a transaction manager. Committing the transaction means that the request or activity of the transaction is actually performed. For instance, if a transaction involves updating data, committing the transaction means that the data is actually updated.
In a two-phase commit system, even if a given server shuts down due to a fault after the transaction manager has decided to commit the transaction, the consistency of the data can be recovered because the durability of the data is guaranteed at each server. However, in a two-phase commit process, a write has to be synchronously performed at all the servers. As a result, the completion of a commit process is as slow as the slowest server, such as the slowest storage device of any server, within the system. This can be detrimental to high-speed transaction processing.
Therefore, in general high-speed transaction processing means that a two-phase commit process and system cannot be employed. One alternative is the PERSEAS system, described in the prior art reference Athanasios E. Papathanasiou et al., “Lightweight Transactions on Networks of Workstations,” Technical Report 209, September 1997, Institute of Computer Science, Crete, Greece. In the PERSEAS system, a memory-based database is mirrored to the memory of a different node or process. When a transaction updating the database is initiated, an undo log is first copied to the memory of a local process, and then the undo log is copied to the memory of a remote process. However, the PERSEAS system is useful primarily in memory-based databases, and does not result in performance enhancements where the database is ultimately written to a relatively low-performance storage device like a hard disk drive.
Another alternative is the Echo system described in the prior art reference Timothy Mann et al., “A Coherent Distributed File Cache with Directory Write-Behind,” Research Report 103, June 1993, Digital Systems Research Center, Palo Alto, Calif. In the Echo system, a log is created for a process of changing the file system, and redundantly copied to a large number of cache servers, to improve the reliability of write-behind operations. A write-behind systems is one in which a transaction is not committed, or written, until copies of the transaction have been stored at a number of cache servers. However, the Echo system also not result in performance enhancements for updates that are ultimately applied to permanent, or non-volatile, storage devices like hard disk drives.
Thus, in a transaction-processing system, committed data should not be lost due to a fault within the transaction server. Therefore, the durability of the data is usually guaranteed by the writing the data to a database stored on a permanent, or non-volatile, storage device like a hard disk drive. However, a hard disk drive is a low-performance storage device, in that it has high latency and low throughput as compared to, for instance, volatile semiconductor memory. The PERSEAS and Echo systems that have been described provide solutions that are not related to such low-performance storage devices, and thus do not solve the problem of having a high-performance transaction-processing system in which fault recovery is guaranteed and that uses a low-performance storage device like a hard disk drive.